package cn.tedu.map;

import jdk.internal.org.objectweb.asm.tree.analysis.Value;

import javax.swing.text.html.HTMLDocument;
import java.lang.reflect.Array;
import java.security.Key;
import java.util.*;

/*测试map接口*/
public class MapDemo {
    public static void main(String[] args) {
        Map<Integer,String> map=new HashMap<>();
        map.put(9527,"白骨精");
        map.put(9528,"黑熊精");
        map.put(9529,"鲤鱼精");
        map.put(9530,"黄毛怪");
        map.put(9527,"女儿国国王");
        map.put(9531,"女儿国国王");
/*map中的key不可以重复,如果重复,后面的value会把前面的覆盖掉
* map中的value可以重复,比如有两个女儿国国王,*/
        System.out.println(map);
        //map.clear();

        System.out.println(map);
        System.out.println(map.isEmpty());
        System.out.println(map.size());
        System.out.println(map.containsKey(9527));
        System.out.println(map.containsValue("白骨精"));
        System.out.println(map.remove(9529));
        System.out.println(map);
        System.out.println(map.containsValue("鲤鱼精"));

        Collection<String> c = map.values();
        System.out.println(c);//[女儿国国王, 黑熊精, 黄毛怪, 女儿国国王]
        //map集合的迭代方式
        /**遍历map中的数据,但是map本身没有迭代器,所以需要先转换成set集合
         * 用到的方法:keyset():把map中的所有key值存入到set集合中Set<key>
         * */
        /*Set<Integer> set = map.keySet();
        System.out.println(set);
        //Set<Map.Entry<Integer, String>> s = map.entrySet();
        Iterator<Integer> it= set.iterator();
        while (it.hasNext()){
            Integer key = it.next();
            String value=map.get(key);
            System.out.println("{"+key+","+value+"}");*/
        Set<Integer> set = map.keySet();
        Iterator<Integer> it=set.iterator();
        while (it.hasNext()){
            Integer key= it.next();
            String value = map.get(key);
            System.out.println("{"+key+","+value+"}");
        }
        /*方式二
        * 遍历map集合,需要先把map转成set集合
        * 是把map中的一对键值对key&value作为一个entry<k,v>整体放入set
        * 一对k,v就是一个entry*/
        Set<Map.Entry<Integer, String>> es = map.entrySet();
        Iterator<Map.Entry<Integer, String>> it2 = es.iterator();
        while (it2.hasNext()){
            Map.Entry<Integer, String> entry = it2.next();
            System.out.println(entry);
            Integer key = entry.getKey();
            String value = entry.getValue();
            System.out.println(key+"!!!"+value);
        }

    }

}

